// / <reference types="vitest" />

import { type ConfigEnv, type UserConfigExport,loadEnv, } from 'vite'
import path, { resolve } from "path"
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"
import svgLoader from "vite-svg-loader"

// https://vitejs.dev/config/
export default (configEnv:ConfigEnv):UserConfigExport=>{
  const viteEnv = loadEnv(configEnv.mode,process.cwd()) as ImportMetaEnv
  const { VITE_PUBLIC_PATH } = viteEnv
  return {
    /*  打包时根据实际情况修改 base */
    base:VITE_PUBLIC_PATH,
    resolve:{
      alias:{
        /** @符号指向src目录 */
        "@":resolve(__dirname,"./src"),
         'nprogress': '/node_modules/nprogress',
      }
    },
    server:{
      // 是否开启HTTPS
      https:false,
      // host :true 才可以使用Network 的形式 ,以IP访问项目
      host:true,
      // 端口号
      port:3000,
      // 是否自动打开浏览器
      open:true,
      // 跨域设置允许
      cors:true,
      // 端口被占用时,是否直接退出
      strictPort:false,
    },
    build:{
      // 消除打包大小超过 500kb警告
      chunkSizeWarningLimit:2000,
      // vite 2.6.x 以上需要配置 minfy:"terser",terserOptions 才能生效
      minify:"terser",
      // 在打包代码时移除 console.log debugger 和注释
      terserOptions:{
        compress:{
          drop_console:false,
          drop_debugger:true,
          pure_funcs:["console.log"]
        },
        format:{
          comments:false
        }
      },
      // 打包后静态资源目录
      assetsDir:"static",

    },
    // * 打包去除 console.log && debugger
		// esbuild: {
		// 	pure: viteEnv.VITE_DROP_CONSOLE ? ["console.log", "debugger"] : []
		// },
    plugins: [
      // 支持 jsx 和 tsx 语法
      vueJsx(),
      // 支持 ref 使用$ref 定义后,无需使用.value
      // vue({reactivityTransform:true}),
      vue(),
      /** 将 SVG 静态图转化为 Vue 组件 */
      svgLoader(),
      // /** SVG */
      createSvgIconsPlugin({
        iconDirs: [path.resolve(process.cwd(), "src/icons/svg")],
        symbolId: "icon-[dir]-[name]"
      })
      // vueJsx(),
    ],
    // test:{
    //   include:["tests/**/*.test.ts"]
    // },
    
  }
}
